﻿<html DIR="LTR" xmlns:tool="http://www.microsoft.com/tooltip" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
  <head>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8" />
    <META NAME="save" CONTENT="history" />
    <title>Usando colocação em espera</title>
    
    <link rel="stylesheet" type="text/css" href="../local/Classic.css">
      
    </link>
    
    <script src="../local/script.js">
      
    </script><script src="../local/script_main.js">&amp;nbsp;</script>
  </head>
  <body>
    <!--Topic built:04/01/2010 05:03:30-->

    
    
    
    
    
    
    
    
    
    <div id="header">
      <table width="100%" id="topTable"><tr>
          <td align="left">
            <span id="headerBold">Usando colocação em espera</span>
          </td>
          <td align="right">
            
          </td>
        </tr></table>
      
      
      
    </div>
    <div id="mainSection">
      
        
        
    <font color="DarkGray">
      
    </font>
    <p />
    
    <p />
  
        <div id="introductionSection" class="section">
    <p>Por padrão, um conjunto de resultados criado dentro de uma transação é mantido em aberto depois que a transação é confirmada no banco de dados, ou quando é revertida. Porém, às vezes é útil que o conjunto de resultados seja fechado, depois que a transação foi confirmada. Para fazer isso, o Microsoft SQL Server JDBC Driver dá suporte ao uso de colocação em espera de conjuntos de resultados. </p>
    <p>A colocação em espera de conjuntos de resultados pode ser configurada usando o método <a href="552eebd0-4c38-43f0-961f-35244f99109b.htm">setHoldability</a> da classe <a href="937292a6-1525-423e-a2b2-a18fd34c2893.htm">SQLServerConnection</a>. Ao definir a colocação em espera usando o método <b>setHoldability</b>, podem ser usadas as constantes de colocação em espera do conjunto de resultados de <b>ResultSet.HOLD_CURSORS_OVER_COMMIT</b> ou <b>ResultSet.CLOSE_CURSORS_AT_COMMIT</b>.</p>
    <p>O driver JDBC também oferece suporte à colocação em espera ao criar um dos objetos de instrução. Ao criar os objetos de Instrução que têm sobrecargas com parâmetros de colocação em espera do conjunto de resultados, o objeto de instrução de colocação em espera deverá corresponder à colocação em espera da conexão. Quando eles não corresponderem, uma exceção será lançada. Isto acontece porque o SQL Server só oferece suporte à colocação em espera no nível de conexão.</p>
    <p>A colocação em espera de um conjunto de resultados é a colocação em espera do objeto <b>SQLServerConnection</b> que está associado com o conjunto de resultados apenas no momento em que ele é criado para cursores do lado de servidor. Isso não se aplica a cursores do lado do cliente. Todos os conjuntos de resultados com cursores do lado do cliente sempre terão o valor de suspensão de <b>ResultSet.HOLD_CURSORS_OVER_COMMIT</b>.</p>
    <p>Nos cursores de servidor, quando conectados ao SQL Server 2005 ou posterior, a definição da suspensão afetará apenas a suspensão dos novos conjuntos de resultados que ainda serão criados nessa conexão. Isto significa que configurar a colocação em espera não tem nenhum impacto na colocação em espera de nenhum conjunto de resultados que foi criado e que já está aberto previamente naquela conexão. Porém, com o SQL Server 2000, a definição da colocação em espera afetará a colocação em espera dos conjuntos de resultados existentes e dos novos conjuntos de resultados que ainda serão criados nessa conexão.</p>
    <p>No exemplo a seguir, a colocação em espera de um conjunto de resultados é definida durante a execução de uma transação local que consiste em duas instruções separadas no bloco <code>try</code>. As instruções são executadas na tabela Production.ScrapReason no banco de dados de exemplo AdventureWorks do SQL Server 2005. Primeiro, o exemplo alterna para o modo de transação manual definindo a confirmação automática como <b>false</b>. Quando o modo de confirmação automática é desabilitado, nenhuma instrução SQL será confirmada até que o aplicativo chame o método <a href="c7346165-51bf-4844-b64c-29833c147236.htm">commit</a> explicitamente. O código no bloco catch reverterá a transação se uma exceção for lançada.</p>
    <div class="sampleCode"><span codeLanguage="other"><pre>public static void executeTransaction(Connection con) {
   try {
       con.setAutoCommit(false);
       con.setHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT);
       Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
       stmt.executeUpdate("INSERT INTO Production.ScrapReason(Name) VALUES('Bad part')");
       ResultSet rs = stmt.executeQuery("SELECT * FROM Production.ScrapReason");
       con.commit();
       System.out.println("Transaction succeeded.");

       //Display results.
       while (rs.next()) {
          System.out.println(rs.getString(2));
       }
       stmt.close();
      }
      catch (SQLException ex) {
         ex.printStackTrace();
         try {
            System.out.println("Transaction failed.");
            con.rollback();
         }
         catch (SQLException se) {
            se.printStackTrace();
         }
      }
   }
}
</pre></span></div>
  </div><span id="seeAlsoSpan"><h1 class="heading">Consulte também</h1></span><div id="seeAlsoSection" class="section" name="collapseableSection"><a href="afbb776f-05dc-4e79-bb25-2c340483e401.htm">Executando transações com o JDBC Driver</a><br /><br /></div><!--[if gte IE 5]>
			<tool:tip element="seeAlsoToolTip" avoidmouse="false"/><tool:tip element="languageFilterToolTip" avoidmouse="false"/><tool:tip element="roleInfoSpan" avoidmouse="false"/>
		<![endif]-->
      <div id="footer" class="section">
        
		<hr />
		
		<span id="fb" class="feedbackcss">
			
			
		</span>
		
		<a href="9bad553b-9e70-4696-8499-2e35f772a1e0.htm">
			
			© 2010 Microsoft Corporation. Todos os direitos reservados.
		</a>
 	
	
      </div>
    </div>
  </body>
</html>